import "@site/src/languages/highlight";

# Behavior

**描述：**

&emsp;&emsp;用于创建游戏AI的行为树框架。

## Seq

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的序列节点，并按顺序执行列表中的子节点。

**签名：**
```tl
Seq: function(nodes: {Leaf}): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| nodes | \{Leaf} | 子节点的列表。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的序列AI节点。 |

## Sel

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的选择器节点，按顺序遍历寻找可以执行成功的子节点。

**签名：**
```tl
Sel: function(nodes: {Leaf}): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| nodes | \{Leaf} | 子节点的列表。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的选择器AI节点。 |

## Con

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的条件节点，在执行时调用检查处理的函数程序。

**签名：**
```tl
Con: function(name: string, handler: function(board: Blackboard): boolean): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| name | string | 条件的名称。 |
| handler | function | 检查函数，接收一个黑板对象并返回布尔值。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的条件AI节点。 |

## Act

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的操作节点，在执行时启动一个特定的单位动作。
此节点将阻塞当前AI树的执行，直到该单位动作执行完成。

**签名：**
```tl
Act: function(actionName: string): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| actionName | string | 要执行的单位动作的名称。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的动作AI节点。 |

## Command

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的命令节点，在执行时启动一个特定的单位动作。
此节点将在动作开始后立即返回。

**签名：**
```tl
Command: function(actionName: string): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| actionName | string | 要执行的单位动作的名称。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的命令AI节点。 |

## Wait

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的等待节点，在执行时等待指定的时间。

**签名：**
```tl
Wait: function(duration: number): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| duration | number | 等待的时间，以秒为单位。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的等待AI节点。 |

## Countdown

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的倒计时节点，只在计时器计时时间内持续执行子节点。

**签名：**
```tl
Countdown: function(time: number, node: Leaf): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| time | number | 时间限制，以秒为单位。 |
| node | Leaf | 要执行的子节点。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的倒计时AI节点。 |

## Timeout

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的超时节点，在计时器运行结束前执行子节点，计时器结束时中止子节点的运行。

**签名：**
```tl
Timeout: function(time: number, node: Leaf): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| time | number | 计时时间，以秒为单位。 |
| node | Leaf | 要执行的子节点。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的超时AI节点。 |

## Repeat

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的重复节点，执行指定次数的子节点。

**签名：**
```tl
Repeat: function(times: integer, node: Leaf): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| times | integer | 要重复执行子节点的次数。 |
| node | Leaf | 要执行的子节点。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的重复AI节点。 |

## Repeat

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的重复节点，反复执行子节点（无限次数）。

**签名：**
```tl
Repeat: function(node: Leaf): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| node | Leaf | 要执行的子节点。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的重复AI节点。 |

## Retry

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的重试节点，重复执行子节点直到成功或达到最大重试次数。

**签名：**
```tl
Retry: function(times: integer, node: Leaf): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| times | integer | 最大重试次数。 |
| node | Leaf | 要执行的子节点。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的重试AI节点。 |

## Retry

**类型：** 函数。

**描述：**

&emsp;&emsp;创建一个新的重试节点，重复执行子节点直到成功为止。

**签名：**
```tl
Retry: function(node: Leaf): Leaf
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| node | Leaf | 要执行的子节点。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Leaf | 新的重试AI节点。 |